Fix exception handling when xmlrpclib.Fault is raised, in legacy mode.
authorEwan Mellor <ewan@xensource.com>
Tue, 20 Mar 2007 14:04:27 +0000 (14:04 +0000)
committerEwan Mellor <ewan@xensource.com>
Tue, 20 Mar 2007 14:04:27 +0000 (14:04 +0000)
Signed-off-by: Ewan Mellor <ewan@xensource.com>
tools/python/xen/util/xmlrpclib2.py

index bd3c2c98e6c7725979b574596497832f45a75e6c..3bdd717de2d6230fc6a2b671d2ace0ead6bc488c 100644 (file)
@@ -241,10 +241,13 @@ class TCPXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer):
                              "ErrorDescription": errdesc },),
                           methodresponse = 1)
                 else:
-                    log.exception('Internal error handling %s', method)
                     import xen.xend.XendClient
-                    response = xmlrpclib.dumps(
-                       xmlrpclib.Fault(xen.xend.XendClient.ERROR_INTERNAL, str(exn)))
+                    if isinstance(exn, xmlrpclib.Fault):
+                        response = xmlrpclib.dumps(exn)
+                    else:
+                        log.exception('Internal error handling %s', method)
+                        response = xmlrpclib.dumps(
+                            xmlrpclib.Fault(xen.xend.XendClient.ERROR_INTERNAL, str(exn)))
             except:
                 log.exception('Internal error handling error')